home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 December / PCWorld_2007-12_cd.bin / domacnost a kancelar / autoit / autoit-v3-setup.exe / Include / GuiTreeView.au3 < prev    next >
Encoding:
Text File  |  2007-09-08  |  35.8 KB  |  860 lines

  1. #include-once
  2. #include <TreeViewConstants.au3>
  3. #include <GUIConstantsEx.au3>
  4. #include <Misc.au3>
  5. ; ------------------------------------------------------------------------------
  6. ;
  7. ; AutoIt Version: 3.2.3++
  8. ; Language:       English
  9. ; Description:    Functions that assist with TreeView.
  10. ;
  11. ; ------------------------------------------------------------------------------
  12.  
  13.  
  14.  
  15. ; Default treeview item extended structure
  16. ; http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/treeview/structures/tvitemex.asp
  17. ; Min.OS: 2K, NT4 with IE 4.0, 98, 95 with IE 4.0
  18. Global Const $s_TVITEMEX = "uint;uint;uint;uint;ptr;int;int;int;int;uint;int"
  19.  
  20. ; function list
  21. ;===============================================================================
  22. ; _GUICtrlTreeViewDeleteAllItems
  23. ; _GUICtrlTreeViewDeleteItem
  24. ; _GUICtrlTreeViewExpand
  25. ; _GUICtrlTreeViewGetBkColor
  26. ; _GUICtrlTreeViewGetCount
  27. ; _GUICtrlTreeViewGetIndent
  28. ; _GUICtrlTreeViewGetLineColor
  29. ; _GUICtrlTreeViewGetParentHandle
  30. ; _GUICtrlTreeViewGetParentID
  31. ; _GUICtrlTreeViewGetState
  32. ; _GUICtrlTreeViewGetText
  33. ; _GUICtrlTreeViewGetTextColor
  34. ; _GUICtrlTreeViewGetTree
  35. ; _GUICtrlTreeViewInsertItem
  36. ; _GUICtrlTreeViewSelectItem
  37. ; _GUICtrlTreeViewSetBkColor
  38. ; _GUICtrlTreeViewSetIcon
  39. ; _GUICtrlTreeViewSetIndent
  40. ; _GUICtrlTreeViewSetLineColor
  41. ; _GUICtrlTreeViewSetState
  42. ; _GUICtrlTreeViewSetText
  43. ; _GUICtrlTreeViewSetTextColor
  44. ; _GUICtrlTreeViewSort
  45. ;===============================================================================
  46.  
  47.  
  48. ;===============================================================================
  49. ;
  50. ; Description:            _GUICtrlTreeViewDeleteAllItems
  51. ; Parameter(s):        $i_treeview - controlID
  52. ; Requirement:            None
  53. ; Return Value(s):    Returns TRUE if successfull or FALSE otherwise.
  54. ; User CallTip:        _GUICtrlTreeViewDeleteAllItems($i_treeview) Removes all items from a tree-view control. (required: <GuiTreeView.au3>)
  55. ; Author(s):            Gary Frost (custompcs at charter dot net)
  56. ; Note(s):
  57. ;
  58. ;===============================================================================
  59. Func _GUICtrlTreeViewDeleteAllItems($i_treeview)
  60.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, False)
  61.     Return GUICtrlSendMsg($i_treeview, $TVM_DELETEITEM, 0, $TVI_ROOT)
  62. EndFunc   ;==>_GUICtrlTreeViewDeleteAllItems
  63.  
  64.  
  65. ;===============================================================================
  66. ;
  67. ; Description:            _GUICtrlTreeViewDeleteItem
  68. ; Parameter(s):        $h_wnd - GUI ID
  69. ;                    $i_treeview - controlID
  70. ;                    $h_item - Optional: item ID/handle
  71. ; Requirement:            None
  72. ; Return Value(s):    Returns TRUE if successfull or FALSE otherwise.
  73. ; User CallTip:        _GUICtrlTreeViewDeleteItem($h_wnd, $i_treeview[, $h_item = 0]) Removes an item and all its children from a tree-view control. (required: <GuiTreeView.au3>)
  74. ; Author(s):            Gary Frost (custompcs at charter dot net)
  75. ; Note(s):            Rewritten by Holger Kotsch
  76. ;
  77. ;===============================================================================
  78. Func _GUICtrlTreeViewDeleteItem($h_wnd, $i_treeview, $h_item = 0)
  79.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, False)
  80.     Local $ret, $h_item_tmp
  81.     
  82.     If $h_item = 0 Then
  83.         $h_item = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_CARET, 0)
  84.     Else
  85.         $h_item_tmp = GUICtrlGetHandle($h_item)
  86.         If $h_item_tmp <> 0 Then
  87.             GUISetState(@SW_LOCK, $h_wnd)
  88.             $ret = GUICtrlDelete($h_item)
  89.             GUISetState(@SW_UNLOCK, $h_wnd)
  90.             Return $ret
  91.         EndIf
  92.     EndIf
  93.     
  94.     If $h_item > 0 Then
  95.         Return GUICtrlSendMsg($i_treeview, $TVM_DELETEITEM, 0, $h_item)
  96.     Else
  97.         Return 0
  98.     EndIf
  99. EndFunc   ;==>_GUICtrlTreeViewDeleteItem
  100.  
  101. ;===============================================================================
  102. ;
  103. ; Description:            _GUICtrlTreeViewExpand
  104. ; Parameter(s):        $i_treeview    - controlID
  105. ;                    $i_expand    - Optional: 0 = collapse items / 1 = expand items (default)
  106. ;                    $h_item        - Optional: item ID or item handle (default 0)
  107. ; Requirement:            None
  108. ; Return Value(s):    None
  109. ; User CallTip:        _GUICtrlTreeViewExpand($i_treeview[, $i_expand = 1[, $h_item = 0]]) Expands or collapses the list of child items associated with the specified parent item, if any. (required: <GuiTreeView.au3>)
  110. ; Author(s):        Holger Kotsch
  111. ; Note(s):            Completely rewritten (old routine by Gary Frost)
  112. ;
  113. ;===============================================================================
  114. Func _GUICtrlTreeViewExpand($i_treeview, $b_Expand = 1, $h_item = 0)
  115.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, 0)
  116.     Local $h_item_tmp
  117.     
  118.     If $h_item = 0 Then
  119.         $h_item = $TVI_ROOT
  120.     Else
  121.         $h_item_tmp = GUICtrlGetHandle($h_item)
  122.         If $h_item_tmp <> 0 Then $h_item = $h_item_tmp
  123.     EndIf
  124.     
  125.     If $b_Expand Then
  126.         _TreeViewExpandTree($i_treeview, $TVE_EXPAND, $h_item)
  127.     Else
  128.         _TreeViewExpandTree($i_treeview, $TVE_COLLAPSE, $h_item)
  129.     EndIf
  130. EndFunc   ;==>_GUICtrlTreeViewExpand
  131.  
  132. ; Callback function for _GUICtrlTreeViewExpand()
  133. Func _TreeViewExpandTree($i_treeview, $i_expand, $h_item)
  134.     Local $h_child
  135.     
  136.     GUICtrlSendMsg($i_treeview, $TVM_EXPAND, $i_expand, $h_item)
  137.     
  138.     If $i_expand = $TVE_EXPAND And $h_item > 0 Then GUICtrlSendMsg($i_treeview, $TVM_ENSUREVISIBLE, 0, $h_item)
  139.     
  140.     $h_item = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_CHILD, $h_item)
  141.     
  142.     While $h_item > 0
  143.         $h_child = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_CHILD, $h_item)
  144.         If $h_child > 0 Then _TreeViewExpandTree($i_treeview, $i_expand, $h_item)
  145.         $h_item = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_NEXT, $h_item)
  146.     WEnd
  147. EndFunc   ;==>_TreeViewExpandTree
  148.  
  149. ;===============================================================================
  150. ;
  151. ; Description:            _GUICtrlTreeViewGetBkColor
  152. ; Parameter(s):        $i_treeview - controlID
  153. ; Requirement:            None
  154. ; Return Value(s):    Returns Hex RGB Back Color of TreeView
  155. ; User CallTip:        _GUICtrlTreeViewGetBkColor($i_treeview) Gets the text back color of a Tree-View control (required: <GuiTreeView.au3>)
  156. ; Author(s):            Gary Frost (custompcs at charter dot net)
  157. ; Note(s):
  158. ;
  159. ;===============================================================================
  160. Func _GUICtrlTreeViewGetBkColor($i_treeview)
  161.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, 0)
  162.     Local $tc = Hex(String(GUICtrlSendMsg($i_treeview, $TVM_GETBKCOLOR, 0, 0)), 6)
  163.     Return '0x' & StringMid($tc, 5, 2) & StringMid($tc, 3, 2) & StringMid($tc, 1, 2)
  164. EndFunc   ;==>_GUICtrlTreeViewGetBkColor
  165.  
  166. ;===============================================================================
  167. ;
  168. ; Description:            _GUICtrlTreeViewGetCount
  169. ; Parameter(s):        $i_treeview - controlID
  170. ; Requirement:            None
  171. ; Return Value(s):    Returns the count of items.
  172. ; User CallTip:        _GUICtrlTreeViewGetCount($i_treeview) Retrieves a count of the items in a tree-view control. (required: <GuiTreeView.au3>)
  173. ; Author(s):            Gary Frost (custompcs at charter dot net)
  174. ; Note(s):
  175. ;
  176. ;===============================================================================
  177. Func _GUICtrlTreeViewGetCount($i_treeview)
  178.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, -1)
  179.     Return GUICtrlSendMsg($i_treeview, $TVM_GETCOUNT, 0, 0)
  180. EndFunc   ;==>_GUICtrlTreeViewGetCount
  181.  
  182. ;===============================================================================
  183. ;
  184. ; Description:            _GUICtrlTreeViewGetIndent
  185. ; Parameter(s):        $i_treeview - controlID
  186. ; Requirement:            None
  187. ; Return Value(s):    Returns the amount of indentation.
  188. ; User CallTip:        _GUICtrlTreeViewGetIndent($i_treeview) Retrieves the amount, in pixels, that child items are indented relative to their parent items. (required: <GuiTreeView.au3>)
  189. ; Author(s):            Gary Frost (custompcs at charter dot net)
  190. ; Note(s):
  191. ;
  192. ;===============================================================================
  193. Func _GUICtrlTreeViewGetIndent($i_treeview)
  194.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, -1)
  195.     Return GUICtrlSendMsg($i_treeview, $TVM_GETINDENT, 0, 0)
  196. EndFunc   ;==>_GUICtrlTreeViewGetIndent
  197.  
  198. ;===============================================================================
  199. ;
  200. ; Description:            _GUICtrlTreeViewGetLineColor
  201. ; Parameter(s):        $i_treeview - controlID
  202. ; Requirement:            None
  203. ; Return Value(s):    Returns Hex RGB Line Color of TreeView
  204. ; User CallTip:        _GUICtrlTreeViewGetLineColor($i_treeview) Gets the line color of a Tree-View control (required: <GuiTreeView.au3>)
  205. ; Author(s):            Gary Frost (custompcs at charter dot net)
  206. ; Note(s):
  207. ;
  208. ;===============================================================================
  209. Func _GUICtrlTreeViewGetLineColor($i_treeview)
  210.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, -1)
  211.     Local $tc = Hex(String(GUICtrlSendMsg($i_treeview, $TVM_GETLINECOLOR, 0, 0)), 6)
  212.     Return '0x' & StringMid($tc, 5, 2) & StringMid($tc, 3, 2) & StringMid($tc, 1, 2)
  213. EndFunc   ;==>_GUICtrlTreeViewGetLineColor
  214.  
  215. ;===============================================================================
  216. ;
  217. ; Description:            _GUICtrlTreeViewGetParentHandle
  218. ; Parameter(s):        $i_treeview - controlID
  219. ;                    $h_item - Optional: item ID/handle to get the state of
  220. ; Requirement:            None
  221. ; Return Value(s):    Returns the parent handle
  222. ; User CallTip:        _GUICtrlTreeViewGetParentHandle($i_treeview) Gets the parent handle of item (selected) in Tree-View control (required: <GuiTreeView.au3>)
  223. ; Author(s):            Holger
  224. ;                            Gary Frost (custompcs at charter dot net)
  225. ; Note(s):
  226. ;
  227. ;===============================================================================
  228. Func _GUICtrlTreeViewGetParentHandle($i_treeview, $h_item = 0)
  229.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, -1)
  230.     If $h_item = 0 Then ; get the handle to item selected
  231.         $h_item = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_CARET, 0)
  232.     Else
  233.         Local $h_itemTmp = GUICtrlGetHandle($h_item)
  234.         If $h_itemTmp <> 0 Then $h_item = $h_itemTmp
  235.     EndIf
  236.     
  237.     If $h_item = 0 Then Return 0
  238.     
  239.     ; get the handle of the parent item
  240.     Local $h_parent = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_PARENT, $h_item)
  241.     
  242.     Return $h_parent
  243. EndFunc   ;==>_GUICtrlTreeViewGetParentHandle
  244.  
  245. ;===============================================================================
  246. ;
  247. ; Description:            _GUICtrlTreeViewGetParentID
  248. ; Parameter(s):        $i_treeview - controlID
  249. ;                    $h_item - Optional: item ID/handle to get the state of
  250. ; Requirement:            None
  251. ; Return Value(s):    Returns the parent control ID
  252. ; User CallTip:        _GUICtrlTreeViewGetParentID($i_treeview) Gets the parent control ID of item (selected) in Tree-View control (required: <GuiTreeView.au3>)
  253. ; Author(s):        Original by Gary Frost (custompcs at charter dot net)
  254. ;                    Rewritten by Holger
  255. ; Note(s):
  256. ;
  257. ;===============================================================================
  258. Func _GUICtrlTreeViewGetParentID($i_treeview, $h_item = 0)
  259.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, -1)
  260.     If $h_item = 0 Then ; get the handle to item selected
  261.         $h_item = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_CARET, 0)
  262.     Else
  263.         Local $h_itemTmp = GUICtrlGetHandle($h_item)
  264.         If $h_itemTmp <> 0 Then $h_item = $h_itemTmp
  265.     EndIf
  266.     
  267.     If $h_item = 0 Then Return 0
  268.     
  269.     ; get the handle of the parent item
  270.     Local $h_parent = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_PARENT, $h_item)
  271.  
  272.     Local $st_TVITEM = DllStructCreate("uint;dword;uint;uint;ptr;int;int;int;int;dword")
  273.     DllStructSetData($st_TVITEM, 1, $TVIF_PARAM)
  274.     DllStructSetData($st_TVITEM, 2, $h_parent)
  275.     DllStructSetData($st_TVITEM, 10, 0)
  276.     
  277.     ; get the item properties
  278.     If GUICtrlSendMsg($i_treeview, $TVM_GETITEM, 0, DllStructGetPtr($st_TVITEM)) = 0 Then Return 0
  279.     
  280.     Return DllStructGetData($st_TVITEM, 10)
  281. EndFunc   ;==>_GUICtrlTreeViewGetParentID
  282.  
  283. ;===============================================================================
  284. ;
  285. ; Description:            _GUICtrlTreeViewGetTextColor
  286. ; Parameter(s):        $i_treeview - controlID
  287. ; Requirement:            None
  288. ; Return Value(s):    Returns Hex RGB Text Color of TreeView
  289. ; User CallTip:        _GUICtrlTreeViewGetTextColor($i_treeview) Gets the text color of a Tree-View control (required: <GuiTreeView.au3>)
  290. ; Author(s):            Gary Frost (custompcs at charter dot net)
  291. ; Note(s):
  292. ;
  293. ;===============================================================================
  294. Func _GUICtrlTreeViewGetTextColor($i_treeview)
  295.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, -1)
  296.     Local $tc = Hex(String(GUICtrlSendMsg($i_treeview, $TVM_GETTEXTCOLOR, 0, 0)), 6)
  297.     Return '0x' & StringMid($tc, 5, 2) & StringMid($tc, 3, 2) & StringMid($tc, 1, 2)
  298. EndFunc   ;==>_GUICtrlTreeViewGetTextColor
  299.  
  300. ;===============================================================================
  301. ;
  302. ; Description:        _GUICtrlTreeViewGetTree
  303. ; Parameter(s):        $i_treeview - controlID
  304. ;                            $s_sep_char - character used for path seperator
  305. ; Requirement:            None
  306. ; Return Value(s):    Returns Tree Path of Item
  307. ; User CallTip:        _GUICtrlTreeViewGetTree($h_wnd, $i_treeview, $s_sep_char) Get all items text beginning by the current selected item from the Tree-View control (required: <GuiTreeView.au3>)
  308. ; Author(s):            Holger
  309. ;                            Gary Frost (custompcs at charter dot net)
  310. ; Note(s):
  311. ;
  312. ;===============================================================================
  313. Func _GUICtrlTreeViewGetTree($i_treeview, $s_sep_char)
  314.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, "")
  315.     Local $szPath = "", $hParent, $h_item
  316.     
  317.     $h_item = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_CARET, 0)
  318.     If $h_item > 0 Then
  319.         $szPath = _GUICtrlTreeViewGetText($i_treeview, $h_item)
  320.         
  321.         Do; Get now the parent item handle if there is one
  322.             $hParent = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_PARENT, $h_item)
  323.             If $hParent > 0 Then $szPath = _GUICtrlTreeViewGetText($i_treeview, $hParent) & $s_sep_char & $szPath
  324.             $h_item = $hParent
  325.         Until $h_item <= 0
  326.     EndIf
  327.     
  328.     Return $szPath
  329. EndFunc   ;==>_GUICtrlTreeViewGetTree
  330.  
  331. ;===============================================================================
  332. ;
  333. ; Description:            _GUICtrlTreeViewSetBkColor
  334. ; Parameter(s):        $i_treeview - controlID
  335. ;                            $v_RGBcolor - New Hex text color
  336. ; Requirement:            None
  337. ; Return Value(s):    Returns the previous Hex RGB Back Color of TreeView
  338. ; User CallTip:        _GUICtrlTreeViewSetBkColor($i_treeview, $v_RGBcolor) Sets the back color of a tree-view control (required: <GuiTreeView.au3>)
  339. ; Author(s):            Gary Frost (custompcs at charter dot net)
  340. ; Note(s):
  341. ;
  342. ;===============================================================================
  343. Func _GUICtrlTreeViewSetBkColor($i_treeview, $v_RGBcolor)
  344.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, -1)
  345.     Return _TreeViewReverseColorOder(GUICtrlSendMsg($i_treeview, $TVM_SETBKCOLOR, 0, Int(_TreeViewReverseColorOder($v_RGBcolor))))
  346. EndFunc   ;==>_GUICtrlTreeViewSetBkColor
  347.  
  348. ;===============================================================================
  349. ;
  350. ; Description:            _GUICtrlTreeViewSetIndent
  351. ; Parameter(s):        $i_treeview - controlID
  352. ;                            $i_indent - Width, in pixels, of the indentation.
  353. ; Requirement:            None
  354. ; Return Value(s):    None
  355. ; User CallTip:        _GUICtrlTreeViewSetIndent($i_treeview, $i_indent) Sets the width of indentation for a tree-view control and redraws the control to reflect the new width. (required: <GuiTreeView.au3>)
  356. ; Author(s):            Gary Frost (custompcs at charter dot net)
  357. ; Note(s):                $i_indent
  358. ;                                If this parameter is less than the system-defined minimum width,
  359. ;                                the new width is set to the system-defined minimum.
  360. ;
  361. ;===============================================================================
  362. Func _GUICtrlTreeViewSetIndent($i_treeview, $i_indent)
  363.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, 0)
  364.     GUICtrlSendMsg($i_treeview, $TVM_SETINDENT, $i_indent, 0)
  365. EndFunc   ;==>_GUICtrlTreeViewSetIndent
  366.  
  367. ;===============================================================================
  368. ;
  369. ; Description:            _GUICtrlTreeViewSetLineColor
  370. ; Parameter(s):        $i_treeview - controlID
  371. ;                            $v_RGBcolor - New Hex text color
  372. ; Requirement:            None
  373. ; Return Value(s):    Returns the previous Hex RGB Line Color of TreeView
  374. ; User CallTip:        _GUICtrlTreeViewSetLineColor($i_treeview, $v_RGBcolor) Sets the line color of a tree-view control (required: <GuiTreeView.au3>)
  375. ; Author(s):            Gary Frost (custompcs at charter dot net)
  376. ; Note(s):
  377. ;
  378. ;===============================================================================
  379. Func _GUICtrlTreeViewSetLineColor($i_treeview, $v_RGBcolor)
  380.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, -1)
  381.     Return _TreeViewReverseColorOder(GUICtrlSendMsg($i_treeview, $TVM_SETLINECOLOR, 0, Int(_TreeViewReverseColorOder($v_RGBcolor))))
  382. EndFunc   ;==>_GUICtrlTreeViewSetLineColor
  383.  
  384. ;===============================================================================
  385. ;
  386. ; Description:            _GUICtrlTreeViewSetTextColor
  387. ; Parameter(s):        $i_treeview - controlID
  388. ;                            $v_RGBcolor - New Hex text color
  389. ; Requirement:            None
  390. ; Return Value(s):    Returns the previous Hex RGB Text Color of TreeView
  391. ; User CallTip:        _GUICtrlTreeViewSetTextColor($i_treeview, $v_RGBcolor) Sets the text color of a tree-view control (required: <GuiTreeView.au3>)
  392. ; Author(s):            Gary Frost (custompcs at charter dot net)
  393. ; Note(s):
  394. ;
  395. ;===============================================================================
  396. Func _GUICtrlTreeViewSetTextColor($i_treeview, $v_RGBcolor)
  397.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, -1)
  398.     Return _TreeViewReverseColorOder(GUICtrlSendMsg($i_treeview, $TVM_SETTEXTCOLOR, 0, Int(_TreeViewReverseColorOder($v_RGBcolor))))
  399. EndFunc   ;==>_GUICtrlTreeViewSetTextColor
  400.  
  401. ;===============================================================================
  402. ;
  403. ; Description:            _GUICtrlTreeViewSort
  404. ; Parameter(s):        $i_treeview - controlID
  405. ; Requirement:            None
  406. ; Return Value(s):    None
  407. ; User CallTip:        _GUICtrlTreeViewSort($i_treeview) Sorts the items of a Tree-View control (required: <GuiTreeView.au3>)
  408. ; Author(s):            Gary Frost (custompcs at charter dot net)
  409. ; Note(s):
  410. ;
  411. ;===============================================================================
  412. Func _GUICtrlTreeViewSort($i_treeview)
  413.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, 0)
  414.     Local $h_item, $i, $hChild, $i_Recursive = 1
  415.     Local $a_tree
  416.     For $i = 0 To _GUICtrlTreeViewGetCount($i_treeview)
  417.         If $i == 0 Then
  418.             $h_item = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_CHILD, $TVI_ROOT)
  419.         Else
  420.             $h_item = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_NEXT, $h_item)
  421.         EndIf
  422.         If IsArray($a_tree) Then
  423.             ReDim $a_tree[UBound($a_tree) + 1]
  424.         Else
  425.             Dim $a_tree[1]
  426.         EndIf
  427.         $a_tree[UBound($a_tree) - 1] = $h_item
  428.     Next
  429.     If IsArray($a_tree) Then
  430.         For $i = 0 To UBound($a_tree) - 1
  431.             GUICtrlSendMsg($i_treeview, $TVM_SORTCHILDREN, $i_Recursive, $a_tree[$i]) ; sort the items in root
  432.             Do ; sort all the children
  433.                 $hChild = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_CHILD, $h_item)
  434.                 If $hChild > 0 Then
  435.                     GUICtrlSendMsg($i_treeview, $TVM_SORTCHILDREN, $i_Recursive, $hChild)
  436.                 EndIf
  437.                 $h_item = $hChild
  438.             Until $h_item <= 0
  439.         Next
  440.     EndIf
  441. EndFunc   ;==>_GUICtrlTreeViewSort
  442.  
  443. ;===============================================================================
  444. ;
  445. ; Description:        _GUITreeViewInsertItem
  446. ; Parameter(s):        $i_treeview        - controlID
  447. ;                    $s_itemtext        - item text
  448. ;                    $h_item            - Optional: parent item ID/handle
  449. ;                    $h_item_after    - Optional: item ID to insert new item after
  450. ; Requirement:        <GuiTreeView.au3>
  451. ; Return Value(s):    Return the new item handle if successfull or 0 otherwise
  452. ; User CallTip:        _GUITreeViewInsertItem($i_treeview, $s_itemtext [, $h_item_parent = 0 [, $h_item_after = 0]])
  453. ; Author(s):        Holger Kotsch
  454. ; Note(s):            Insert an item into a treeview control
  455. ;
  456. ;===============================================================================
  457. Func _GUICtrlTreeViewInsertItem($i_treeview, $s_itemtext, $h_item_parent = 0, $h_item_after = 0)
  458.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, 0)
  459.     Local $h_item_tmp
  460.     Local $st_TVI = DllStructCreate("uint;uint;" & $s_TVITEMEX)
  461.     If @error Then Return SetError(@error, @error, 0)
  462.     
  463.     Local $st_text = DllStructCreate("char[" & StringLen($s_itemtext) + 1 & "]")
  464.     If @error Then Return SetError(@error, @error, 0)
  465.     
  466.     If $h_item_parent = 0 Then
  467.         $h_item_parent = $TVI_ROOT
  468.     Else
  469.         $h_item_tmp = GUICtrlGetHandle($h_item_parent)
  470.         If $h_item_tmp <> 0 Then $h_item_parent = $h_item_tmp
  471.     EndIf
  472.     
  473.     If $h_item_after = 0 Or _
  474.             ($h_item_after <> $TVI_ROOT And _
  475.             $h_item_after <> $TVI_FIRST And _
  476.             $h_item_after <> $TVI_LAST And _
  477.             $h_item_after <> $TVI_SORT) Then
  478.         $h_item_after = $TVI_LAST
  479.     EndIf
  480.     
  481.     DllStructSetData($st_text, 1, $s_itemtext)
  482.     
  483.     Local $u_mask = $TVIF_TEXT
  484.     
  485.     Local $h_icon = _TreeViewGetImageListIconHandle($i_treeview, 0)
  486.     If $h_icon <> 0 Then
  487.         $u_mask = BitOR($u_mask, $TVIF_IMAGE)
  488.         DllStructSetData($st_TVI, 9, 0)
  489.         DllCall("user32.dll", "int", "DestroyIcon", "hwnd", $h_icon)
  490.     EndIf
  491.     
  492.     $h_icon = _TreeViewGetImageListIconHandle($i_treeview, 1)
  493.     If $h_icon <> 0 Then
  494.         $u_mask = BitOR($u_mask, $TVIF_SELECTEDIMAGE)
  495.         DllStructSetData($st_TVI, 10, 0)
  496.         DllCall("user32.dll", "int", "DestroyIcon", "hwnd", $h_icon)
  497.     EndIf
  498.     
  499.     DllStructSetData($st_TVI, 1, $h_item_parent)
  500.     DllStructSetData($st_TVI, 2, $h_item_after)
  501.     DllStructSetData($st_TVI, 3, $u_mask)
  502.     DllStructSetData($st_TVI, 7, DllStructGetPtr($st_text))
  503.     
  504.     Return GUICtrlSendMsg($i_treeview, $TVM_INSERTITEM, 0, DllStructGetPtr($st_TVI))
  505. EndFunc   ;==>_GUICtrlTreeViewInsertItem
  506.  
  507. ;===============================================================================
  508. ;
  509. ; Description:        _GUICtrlTreeViewSetIcon
  510. ; Parameter(s):        $i_treeview        - controlID
  511. ;                    $h_item            - item ID/handle to set the icon
  512. ;                    $s_iconfile        - the file to extract the icon of
  513. ;                    $i_iconID        - the iconID to extract of the file
  514. ;                    $u_imagemode    - Optional: 2=normal image / 4=seletected image to set (default 6)
  515. ; Requirement:        None
  516. ; Return Value(s):    Returns TRUE if successfull or FALSE otherwise
  517. ; User CallTip:        _GUITreeViewSetIcon($i_treeview, $h_item = 0, $s_iconfile = ""[, $i_iconID = 0[, $u_imagemode = 6]])
  518. ; Author(s):        Holger Kotsch
  519. ; Note(s):            Change/set an item icon
  520. ;
  521. ;===============================================================================
  522. Func _GUICtrlTreeViewSetIcon($i_treeview, $h_item = 0, $s_iconfile = "", $i_iconID = 0, $u_imagemode = 6)
  523.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, False)
  524.     $h_item = _TreeViewGetItemHandle($i_treeview, $h_item)
  525.     If $h_item = 0 Or $s_iconfile = "" Then Return SetError(1, 1, False)
  526.     
  527.     Local $st_TVITEM = DllStructCreate($s_TVITEMEX)
  528.     If @error Then Return SetError(1, 1, False)
  529.     
  530.     Local $st_icon = DllStructCreate("int")
  531.     Local $i_count = DllCall("shell32.dll", "int", "ExtractIconEx", _
  532.             "str", $s_iconfile, _
  533.             "int", $i_iconID, _
  534.             "ptr", 0, _
  535.             "ptr", DllStructGetPtr($st_icon), _
  536.             "int", 1)
  537.     If $i_count[0] = 0 Then Return 0
  538.     
  539.     Local $h_imagelist = GUICtrlSendMsg($i_treeview, $TVM_GETIMAGELIST, 0, 0)
  540.     If $h_imagelist = 0 Then
  541.         $h_imagelist = DllCall("comctl32.dll", "hwnd", "ImageList_Create", _
  542.                 "int", 16, _
  543.                 "int", 16, _
  544.                 "int", 0x0021, _
  545.                 "int", 0, _
  546.                 "int", 1)
  547.         $h_imagelist = $h_imagelist[0]
  548.         If $h_imagelist = 0 Then Return SetError(1, 1, False)
  549.         
  550.         GUICtrlSendMsg($i_treeview, $TVM_SETIMAGELIST, 0, $h_imagelist)
  551.     EndIf
  552.     
  553.     Local $h_icon = DllStructGetData($st_icon, 1)
  554.     Local $i_icon = DllCall("comctl32.dll", "int", "ImageList_AddIcon", _
  555.             "hwnd", $h_imagelist, _
  556.             "hwnd", $h_icon)
  557.     $i_icon = $i_icon[0]
  558.     
  559.     DllCall("user32.dll", "int", "DestroyIcon", "hwnd", $h_icon)
  560.     
  561.     Local $u_mask = BitOR($TVIF_IMAGE, $TVIF_SELECTEDIMAGE)
  562.     
  563.     If BitAND($u_imagemode, 2) Then
  564.         DllStructSetData($st_TVITEM, 7, $i_icon)
  565.         If Not BitAND($u_imagemode, 4) Then $u_mask = $TVIF_IMAGE
  566.     EndIf
  567.     
  568.     If BitAND($u_imagemode, 4) Then
  569.         DllStructSetData($st_TVITEM, 8, $i_icon)
  570.         If Not BitAND($u_imagemode, 2) Then
  571.             $u_mask = $TVIF_SELECTEDIMAGE
  572.         Else
  573.             $u_mask = BitOR($TVIF_IMAGE, $TVIF_SELECTEDIMAGE)
  574.         EndIf
  575.     EndIf
  576.  
  577.     DllStructSetData($st_TVITEM, 1, $u_mask)
  578.     DllStructSetData($st_TVITEM, 2, $h_item)
  579.  
  580.     Return GUICtrlSendMsg($i_treeview, $TVM_SETITEM, 0, DllStructGetPtr($st_TVITEM))
  581. EndFunc   ;==>_GUICtrlTreeViewSetIcon
  582.  
  583. ;===============================================================================
  584. ;
  585. ; Description:        _GUICtrlTreeViewGetState
  586. ; Parameter(s):        $i_treeview        - controlID
  587. ;                    $h_item            - item ID/handle to get the state of
  588. ; Requirement:        None
  589. ; Return Value(s):    Returns the item state if successfull or 0 otherwise
  590. ; User CallTip:        _GUITreeViewSetState($i_treeview, $h_item = 0, $s_itemtext)
  591. ; Author(s):        Holger Kotsch
  592. ; Note(s):            Change/set the state of an item
  593. ;
  594. ;===============================================================================
  595. Func _GUICtrlTreeViewGetState($i_treeview, $h_item = 0)
  596.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, 0)
  597.     $h_item = _TreeViewGetItemHandle($i_treeview, $h_item)
  598.     If $h_item = 0 Then Return SetError(1, 1, 0)
  599.     
  600.     Local $st_TVITEM = DllStructCreate($s_TVITEMEX)
  601.     If @error Then Return SetError(1, 1, 0)
  602.     
  603.     DllStructSetData($st_TVITEM, 1, $TVIF_STATE)
  604.     DllStructSetData($st_TVITEM, 2, $h_item)
  605.     
  606.     If GUICtrlSendMsg($i_treeview, $TVM_GETITEM, 0, DllStructGetPtr($st_TVITEM)) = 0 Then Return 0
  607.     
  608.     Return DllStructGetData($st_TVITEM, 3)
  609. EndFunc   ;==>_GUICtrlTreeViewGetState
  610.  
  611.  
  612. ;===============================================================================
  613. ;
  614. ; Description:        _GUICtrlTreeViewSetState
  615. ; Parameter(s):        $i_treeview        - controlID
  616. ;                    $h_item            - item ID/handle to set the icon
  617. ;                    $i_state            - Optional: the new item state (default 0 - no change) (See Remarks).
  618. ;                    $i_stateRemove    - Optional: Remove state from item (Default 0 - no state to remove) (See Remarks)
  619. ; Requirement:        None
  620. ; Return Value(s):    Returns TRUE if successfull or FALSE otherwise
  621. ; User CallTip:        _GUITreeViewSetState($i_treeview, $h_item[, $i_state = 0[, $i_stateRemove = 0]) Set the state of the specified treeview item. (required: <GuiTreeView.au3>)
  622. ; Author(s):        Holger Kotsch
  623. ;                        Modified By: Gary Frost (custompcs at charter dot net)
  624. ; Note(s):            Change/set the state of an item
  625. ;
  626. ;===============================================================================
  627. Func _GUICtrlTreeViewSetState($i_treeview, $h_item, $i_state = 0, $i_stateRemove = 0)
  628.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, False)
  629.     $h_item = _TreeViewGetItemHandle($i_treeview, $h_item)
  630.     If $h_item = 0 Or ($i_state = 0 And $i_stateRemove = 0) Then Return 0
  631.     
  632.     Local $st_TVITEM = DllStructCreate($s_TVITEMEX)
  633.     If @error Then Return SetError(1, 1, 0)
  634.     DllStructSetData($st_TVITEM, 1, $TVIF_STATE)
  635.     DllStructSetData($st_TVITEM, 2, $h_item)
  636.     DllStructSetData($st_TVITEM, 3, $i_state)
  637.     DllStructSetData($st_TVITEM, 4, $i_state)
  638.     If $i_stateRemove Then DllStructSetData($st_TVITEM, 4, BitOR($i_stateRemove, $i_state))
  639.     Return GUICtrlSendMsg($i_treeview, $TVM_SETITEM, 0, DllStructGetPtr($st_TVITEM))
  640. EndFunc   ;==>_GUICtrlTreeViewSetState
  641.  
  642.  
  643. ;===============================================================================
  644. ;
  645. ; Description:        _GUITreeViewSetText
  646. ; Parameter(s):        $i_treeview        - controlID
  647. ;                    $h_item            - item ID to set the icon
  648. ;                    $s_itemtext        - the new item text
  649. ; Requirement:        None
  650. ; Return Value(s):    Returns TRUE if successfull or FALSE otherwise
  651. ; User CallTip:        _GUITreeViewSetText($i_treeview, $h_item = 0, $s_itemtext)
  652. ; Author(s):        Holger Kotsch
  653. ; Note(s):            Change/set the text of an item
  654. ;
  655. ;===============================================================================
  656. Func _GUICtrlTreeViewSetText($i_treeview, $h_item = 0, $s_text = "")
  657.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, False)
  658.     $h_item = _TreeViewGetItemHandle($i_treeview, $h_item)
  659.     If $h_item = 0 Or $s_text = "" Then Return SetError(1, 1, 0)
  660.     
  661.     Local $st_TVITEM = DllStructCreate($s_TVITEMEX)
  662.     If @error Then Return SetError(@error, @error, 0)
  663.     
  664.     Local $st_text = DllStructCreate("char[" & StringLen($s_text) + 1 & "]")
  665.     If @error Then Return SetError(@error, @error, 0)
  666.     
  667.     DllStructSetData($st_text, 1, $s_text)
  668.     
  669.     DllStructSetData($st_TVITEM, 1, $TVIF_TEXT)
  670.     DllStructSetData($st_TVITEM, 2, $h_item)
  671.     DllStructSetData($st_TVITEM, 5, DllStructGetPtr($st_text))
  672.     
  673.     Return GUICtrlSendMsg($i_treeview, $TVM_SETITEM, 0, DllStructGetPtr($st_TVITEM))
  674. EndFunc   ;==>_GUICtrlTreeViewSetText
  675.  
  676.  
  677. ; _GUICtrlTreeViewSelectItem is an depreciated  function
  678. ;
  679. ; Use GUICtrlSetState($h_itemID, $GUI_FOCUS)
  680. ;===============================================================================
  681. ;
  682. ; Description:        _GUICtrlTreeViewSelectItem
  683. ; Parameter(s):        $i_itemID    - item ID
  684. ; Requirement:        None
  685. ; Return Value(s):    Returns TRUE if successfull or FALSE otherwise.
  686. ; User CallTip:        _GUICtrlTreeViewSelectItem($h_itemID) Selects the specified tree-view item, scrolls the item into view)
  687. ; Author(s):        Gary Frost (custompcs at charter dot net)
  688. ; Note(s):            :
  689. ;
  690. ;===============================================================================
  691. Func _GUICtrlTreeViewSelectItem($i_itemID)
  692.     GUICtrlSetState($i_itemID, $GUI_FOCUS)
  693. EndFunc   ;==>_GUICtrlTreeViewSelectItem
  694.  
  695.  
  696. ;===============================================================================
  697. ;
  698. ; Description:        _GUICtrlTreeViewGetText
  699. ; Parameter(s):        $i_treeview    - controlID
  700. ; Parameter(s):        $h_item        - item ID or item handle
  701. ; Requirement:            None
  702. ; Return Value(s):    Returns text of item
  703. ;                            Returns empty string if it fails
  704. ; User CallTip:        _GUICtrlTreeViewGetText($i_treeview, $h_item) Retrieve the item text by sending a right item handle (required: <GuiTreeView.au3>)
  705. ; Author(s):            Holger
  706. ;                            Gary Frost (custompcs at charter dot net)
  707. ; Note(s):
  708. ;
  709. ;===============================================================================
  710. Func _GUICtrlTreeViewGetText($i_treeview, $h_item = 0)
  711.     If Not _IsClassName ($i_treeview, "SysTreeView32") Then Return SetError(-1, -1, "")
  712.     Local $s_text = ""
  713.     
  714.     $h_item = _TreeViewGetItemHandle($i_treeview, $h_item)
  715.     If $h_item = 0 Then Return SetError(1, 1, "")
  716.     
  717.     Local $st_text = DllStructCreate("char[4096]"); create a text 'area' for receiving the text
  718.     If @error Then Return SetError(@error, @error, "")
  719.     
  720.     Local $st_TVITEM = DllStructCreate($s_TVITEMEX)
  721.     If @error Then Return SetError(@error, @error, "")
  722.     
  723.     DllStructSetData($st_TVITEM, 1, $TVIF_TEXT)
  724.     DllStructSetData($st_TVITEM, 2, $h_item)
  725.     DllStructSetData($st_TVITEM, 5, DllStructGetPtr($st_text))
  726.     DllStructSetData($st_TVITEM, 6, DllStructGetSize($st_text))
  727.     
  728.     If GUICtrlSendMsg($i_treeview, $TVM_GETITEM, 0, DllStructGetPtr($st_TVITEM)) Then $s_text = DllStructGetData($st_text, 1)
  729.     
  730.     Return $s_text
  731. EndFunc   ;==>_GUICtrlTreeViewGetText
  732.  
  733. ;===============================================================================
  734. ; Description:        Some other helper functions
  735. ;===============================================================================
  736.  
  737.  
  738. Func _TreeViewDeleteItem($i_treeview, $hChild, $szPath, $szFind)
  739.     Local $t_hchild, $t_child
  740.     $t_hchild = $hChild
  741.     If $szPath = $szFind Then
  742.         Return GUICtrlSendMsg($i_treeview, $TVM_SELECTITEM, $TVGN_CARET, $hChild)
  743.     Else
  744.         Do; Get now the child item handle if there is one
  745.             $t_hchild = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_CHILD, $t_hchild)
  746.             If $t_hchild > 0 Then
  747.                 $szPath = _GUICtrlTreeViewGetText($i_treeview, $t_hchild)
  748.                 If $szPath = $szFind Then
  749.                     Return GUICtrlSendMsg($i_treeview, $TVM_DELETEITEM, 0, $t_hchild)
  750.                 Else
  751.                     $t_child = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_NEXT, $t_hchild)
  752.                     If $t_child > 0 Then
  753.                         $szPath = _GUICtrlTreeViewGetText($i_treeview, $t_hchild)
  754.                         If $szPath = $szFind Then
  755.                             Return GUICtrlSendMsg($i_treeview, $TVM_DELETEITEM, 0, $t_hchild)
  756.                         Else
  757.                             _TreeViewDeleteItem($i_treeview, $t_hchild, _GUICtrlTreeViewGetText($i_treeview, $t_hchild), $szFind)
  758.                         EndIf
  759.                     EndIf
  760.                 EndIf
  761.             EndIf
  762.         Until $t_hchild <= 0
  763.         $t_hchild = $hChild
  764.         Do; Get now the child item handle if there is one
  765.             $t_hchild = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_NEXT, $t_hchild)
  766.             If $t_hchild > 0 Then
  767.                 $szPath = _GUICtrlTreeViewGetText($i_treeview, $t_hchild)
  768.                 If $szPath = $szFind Then
  769.                     Return GUICtrlSendMsg($i_treeview, $TVM_DELETEITEM, 0, $t_hchild)
  770.                 Else
  771.                     $t_child = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_CHILD, $t_hchild)
  772.                     If $t_child > 0 Then
  773.                         _TreeViewDeleteItem($i_treeview, $t_child, _GUICtrlTreeViewGetText($i_treeview, $t_child), $szFind)
  774.                         $t_hchild = 0
  775.                     EndIf
  776.                 EndIf
  777.             EndIf
  778.         Until $t_hchild <= 0
  779.     EndIf
  780. EndFunc   ;==>_TreeViewDeleteItem
  781.  
  782. Func _TreeViewSelectItem($i_treeview, $hChild, $szPath, $szFind)
  783.     Local $t_hchild, $t_child
  784.     $t_hchild = $hChild
  785.     If $szPath = $szFind Then
  786.         Return GUICtrlSendMsg($i_treeview, $TVM_SELECTITEM, $TVGN_CARET, $hChild)
  787.     Else
  788.         Do; Get now the child item handle if there is one
  789.             $t_hchild = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_CHILD, $t_hchild)
  790.             If $t_hchild > 0 Then
  791.                 $szPath = _GUICtrlTreeViewGetText($i_treeview, $t_hchild)
  792.                 If $szPath = $szFind Then
  793.                     Return GUICtrlSendMsg($i_treeview, $TVM_SELECTITEM, $TVGN_CARET, $t_hchild)
  794.                 Else
  795.                     $t_child = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_NEXT, $t_hchild)
  796.                     If $t_child > 0 Then
  797.                         $szPath = _GUICtrlTreeViewGetText($i_treeview, $t_hchild)
  798.                         If $szPath = $szFind Then
  799.                             Return GUICtrlSendMsg($i_treeview, $TVM_SELECTITEM, $TVGN_CARET, $t_hchild)
  800.                         Else
  801.                             _TreeViewSelectItem($i_treeview, $t_hchild, _GUICtrlTreeViewGetText($i_treeview, $t_hchild), $szFind)
  802.                         EndIf
  803.                     EndIf
  804.                 EndIf
  805.             EndIf
  806.         Until $t_hchild <= 0
  807.         $t_hchild = $hChild
  808.         Do; Get now the child item handle if there is one
  809.             $t_hchild = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_NEXT, $t_hchild)
  810.             If $t_hchild > 0 Then
  811.                 $szPath = _GUICtrlTreeViewGetText($i_treeview, $t_hchild)
  812.                 If $szPath = $szFind Then
  813.                     Return GUICtrlSendMsg($i_treeview, $TVM_SELECTITEM, $TVGN_CARET, $t_hchild)
  814.                 Else
  815.                     $t_child = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_CHILD, $t_hchild)
  816.                     If $t_child > 0 Then
  817.                         _TreeViewSelectItem($i_treeview, $t_child, _GUICtrlTreeViewGetText($i_treeview, $t_child), $szFind)
  818.                         $t_hchild = 0
  819.                     EndIf
  820.                 EndIf
  821.             EndIf
  822.         Until $t_hchild <= 0
  823.     EndIf
  824. EndFunc   ;==>_TreeViewSelectItem
  825.  
  826. ;===============================================================================
  827. ;
  828. ; Description:            _TreeViewReverseColorOder
  829. ; Parameter(s):        $v_color - Hex Color
  830. ; Requirement:            None
  831. ; Return Value(s):    Return Hex RGB or BGR Color
  832. ; User CallTip:        _TreeViewReverseColorOder($v_color) Convert Hex RGB or BGR Color to Hex RGB or BGR Color
  833. ; Author(s):            Gary Frost (custompcs at charter dot net)
  834. ; Note(s):                Used for getting/setting view colors
  835. ;
  836. ;===============================================================================
  837. Func _TreeViewReverseColorOder($v_color)
  838.     Local $tc = Hex(String($v_color), 6)
  839.     Return '0x' & StringMid($tc, 5, 2) & StringMid($tc, 3, 2) & StringMid($tc, 1, 2)
  840. EndFunc   ;==>_TreeViewReverseColorOder
  841.  
  842. Func _TreeViewGetItemHandle($i_treeview, $h_item)
  843.     If $h_item = 0 Then
  844.         $h_item = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_ROOT, 0)
  845.     Else
  846.         Local $h_item_tmp = GUICtrlGetHandle($h_item)
  847.         If $h_item_tmp <> 0 Then $h_item = $h_item_tmp
  848.     EndIf
  849.     
  850.     Return $h_item
  851. EndFunc   ;==>_TreeViewGetItemHandle
  852.  
  853. Func _TreeViewGetImageListIconHandle($i_treeview, $u_index)
  854.     Local $h_imagelist = GUICtrlSendMsg($i_treeview, $TVM_GETIMAGELIST, 0, 0)
  855.     Local $h_icon = DllCall("comctl32.dll", "hwnd", "ImageList_GetIcon", _
  856.             "hwnd", $h_imagelist, _
  857.             "int", $u_index, _
  858.             "int", 0)
  859.     Return $h_icon[0]
  860. EndFunc   ;==>_TreeViewGetImageListIconHandle